home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 August: Tool Chest / Dev.CD Aug 00 TC Disk 2.toast / pc / sample code / quicktime / quicktime for java / keyboardcontroller / src / keyboardcontroller.java
Encoding:
Java Source  |  2000-06-23  |  3.6 KB  |  141 lines

  1. /*
  2.  * QuickTime for Java SDK Sample Code
  3.  
  4.    Usage subject to restrictions in SDK License Agreement
  5.  * Copyright: © 1996-1999 Apple Computer, Inc.
  6.  
  7.  */ 
  8. import java.awt.*;
  9. import java.awt.event.*;
  10. import java.io.*;
  11.  
  12. import quicktime.std.StdQTConstants;
  13. import quicktime.*;
  14. import quicktime.qd.*;
  15. import quicktime.io.*;
  16. import quicktime.std.image.*;
  17. import quicktime.std.movies.*;
  18.  
  19. import quicktime.app.players.*;
  20. import quicktime.app.QTFactory;
  21. import quicktime.app.time.*;
  22. import quicktime.app.image.*;
  23. import quicktime.app.display.*;
  24. import quicktime.app.anim.*;
  25. import quicktime.app.spaces.*;
  26. import quicktime.app.actions.*;
  27.  
  28.  
  29. public class KeyBoardController extends Frame implements StdQTConstants, QDConstants {
  30.     
  31.     public static void main(String args[]) {
  32.         try { 
  33.             QTSession.open();
  34.             
  35.             KeyBoardController te = new KeyBoardController("KeyBoard Controller");
  36.             te.pack();
  37.             te.show();
  38.             te.toFront();    
  39.         } catch (Exception e) {
  40.             e.printStackTrace();
  41.             QTSession.close();
  42.         }
  43.     
  44.     }
  45.     
  46.     KeyBoardController(String title) throws Exception {
  47.         super (title);
  48.  
  49.         QTCanvas myQTCanvas = new QTCanvas(QTCanvas.kInitialSize, 0.5f, 0.5f);
  50.         add("Center", myQTCanvas);
  51.                         
  52.         addWindowListener(new WindowAdapter() {
  53.             public void windowClosing (WindowEvent e) {
  54.                 QTSession.close();
  55.                 dispose();
  56.             }
  57.             
  58.             public void windowClosed (WindowEvent e) { 
  59.                 System.exit(0);
  60.             }
  61.         });
  62.  
  63.         Dimension d = new Dimension (300, 300);
  64.         QDGraphics gw = new QDGraphics (new QDRect(d));
  65.         Compositor comp = new Compositor (gw, QDColor.gray, 20, 1);
  66.         
  67.         GraphicsImporterDrawer if1 = new GraphicsImporterDrawer (new QTFile (QTFactory.findAbsolutePath ("pics/house.jpg")));
  68.         if1.setDisplayBounds (new QDRect (d));
  69.         ImagePresenter id = ImagePresenter.fromGraphicsImporterDrawer (if1);
  70.         id.setGraphicsMode (new GraphicsMode (blend, QDColor.gray));
  71.         comp.addMember (id, 1);
  72.  
  73.         QTFile qtf = new QTFile (QTFactory.findAbsolutePath ("jumps.mov"));        
  74.         OpenMovieFile movieFile = OpenMovieFile.asRead(qtf);
  75.         Movie mv = Movie.fromFile (movieFile);
  76.         MoviePresenter mvp = new MoviePresenter(mv);        
  77.         mvp.setLocation (80, 80);
  78.         comp.addMember (mvp, 2);
  79.  
  80.         KBDController keyController = new KBDController(mvp);                
  81.         comp.addController(keyController);
  82.  
  83.         myQTCanvas.setClient (comp, true);
  84.         comp.getTimer().setRate(1);
  85.     }    
  86. }
  87.  
  88.  
  89. class KBDController implements ListenerController, KeyListener {
  90.  
  91.     private Playable player;
  92.     private float savedRate = 1;
  93.     KBDController (Playable player) {
  94.         this.player = player;
  95.     }
  96.         
  97.     public void addedToSpace (Space s) {}
  98.  
  99.     public void removedFromSpace () {}
  100.         
  101.     public void addedTo (Object interest){
  102.         if (interest instanceof Component)
  103.             ((Component)interest).addKeyListener (this);    
  104.     }    
  105.     public void removedFrom (Object interest){
  106.         if (interest instanceof Component)
  107.             ((Component)interest).removeKeyListener (this);    
  108.     }
  109.     public void keyPressed (KeyEvent e) {
  110.         try {
  111.             switch (e.getKeyCode()) {
  112.                 case KeyEvent.VK_SPACE:
  113.                     if (player.getRate() != 0) 
  114.                         player.setRate (0);
  115.                     else
  116.                         player.setRate (savedRate);
  117.                     break;
  118.                 case KeyEvent.VK_UP:
  119.                     player.setTime (player.getDuration());
  120.                     break;
  121.                 case KeyEvent.VK_DOWN:
  122.                     player.setTime (0);
  123.                     break;
  124.                 case KeyEvent.VK_LEFT:
  125.                     player.setRate (-1);
  126.                     savedRate = -1;
  127.                     break;
  128.                 case KeyEvent.VK_RIGHT:
  129.                     player.setRate (1);
  130.                     savedRate = 1;
  131.                     break;
  132.             }
  133.         } catch (QTException ee) {
  134.             throw new QTRuntimeException (ee);
  135.         }
  136.     }
  137.     public void keyReleased (KeyEvent e) {}
  138.     public void keyTyped (KeyEvent e) {}
  139. }    
  140.     
  141.